package com.syswin.lhztest.demoSwagger.strategy;

import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;

/**
 * @author:lhz
 * @date:2018/11/14 17:40
 */
@Service
public class FeeCalculationService {



    //定义一个Map存储 打折策略对象(策略针对的类型（key）-->对象本身（value）)
    HashMap<String,DiscountStrategy> map = new HashMap<>();
    //构造函数中，自动注入所有的策略实现对象，List集合形式
    public  FeeCalculationService(List<DiscountStrategy> discountStrategyList){
        for(DiscountStrategy discountStrategy :discountStrategyList){
            System.out.println("discountStrategy"+discountStrategy);
            map.put(discountStrategy.type(),discountStrategy);
        }
    }

    /**
     * 打折计算
     * @param type 用户类型
     * @param cost 价格
     * @return
     */
    public  double calculate(String type ,double cost){
        //自动匹配到对应类型的计算方式
        return map.get(type).discount(cost);
    }




//    @Autowired
//    VipDiscountStrategy vipDiscountStrategy;
//
//    @Autowired
//    NormalDiscountStrategy normalDiscountStrategy;
//    /**
//     * 打折计算
//     * @param type 用户类型
//     * @param cost 价格
//     * @return
//     */
//    public  double calculate(String type ,double cost){
//
//        if("vip".equals(type)){
//            return  vipDiscountStrategy.discount(cost);
//        }
//        return normalDiscountStrategy.discount(cost);
//    }
}
